/*
 * Die Klasse Email
 * 
 * Die Klasse Email erfasst die Email-Adresse eines Benutzers.
 * 
 * Datei: Email.java 			Autor:	 Martin Fischer 
 * Datum: 27.11:2011 			Version: 2.0
 */
package kommunikation;

import java.io.Serializable;
import GUI.Dashboard;
import kommunikation.Parser.EmailParser;

public class Email implements Serializable
{

  private static final long serialVersionUID = -4917759806188912881L;
  private String email; 		/* Die gesamte Email-Adresse 	*/
  private Uebersetzung uebersetzung;


  /*
   * Der Konstruktorer der Klasse Email erfasst eine gesamte
   * Email-Adresse als String
   */
  public Email (String email)
  {
    /*
     * erzeuge ein Objekt der Klasse Uebersetzung mit der verwendeten 
     * Sprache 
     */
    uebersetzung = new Uebersetzung (Dashboard.verwendeteSprache ()
	.toString ());
    if (!istGueltigeEmail (email)) /* Gueltigkeit der EMail pruefen */
    {
      /*
       * werfe eine Ausnahme, wenn die E-mail nicht erkannt wird
       */
      throw new UngueltigeEingabeAusnahme (
	  uebersetzung.lokal.gibUebersetzung ("FEP"));
    }
    else
    {
      /*
       * E-Mail wurde als gueltig erkannt und uebernommen
       */
      this.email = email;
    }
  }


  /*
   * setze eine neue Email
   */
  public void setzeEmail (String email)
  {
    /*
     * erzeuge ein Objekt der Klasse Uebersetzung mit der verwendeten 
     * Sprache 
     */
    uebersetzung = new Uebersetzung (Dashboard.verwendeteSprache ().
	toString ());
    if (!istGueltigeEmail (email)) 	/* Gueltigkeit der EMail pruefen*/
    {
      /*
       * werfe eine Ausnahme, wenn die E-mail nicht erkannt wird
       */
      throw new UngueltigeEingabeAusnahme (
	  uebersetzung.lokal.gibUebersetzung ("FEP"));
    }
    else
    {
      /*
       * E-Mail wurde als gueltig erkannt und uebernommen
       */
      this.email = email;
    }
  }


  /*
   * gib die Email zurueck
   */
  public String gibEmail ()
  {
    return email;
  }


  /*
   * prueft, ob die Email ein gueltiges Format besitzt
   */
  public boolean istGueltigeEmail (String zuPruefendeMmail)
  {
    EmailParser ep = new EmailParser ();
    ep.initialisieren (zuPruefendeMmail);
    /*
     * der Parser arbeitet solange bis sich die Maschine in eimem
     * Endzustand oder sich in einem Fehlerzustand befindet
     */
    while (!ep.getAktuellenZusatnd ().istEndzustand ()
	&& !ep.istImFehlerzustand ())
    {
      /*
       * hier findet das Schrittweise ueberpruefen des Wortes statt
       */
      ep.arbeiten ();
    }
    /*
     * wenn sich der Parser im Fehlerzustand befindet wird ein false
     * zurueckgegeben fuer nicht erkannt
     */
    if (ep.istImFehlerzustand ())
    {
      return false;
    }
    /*
     * das Wort wurde erkannt
     */
    return true;
  }
}
